package com.photonpay.api.service.impl;

import com.photonpay.api.client.PhotonPayApiClient;
import com.photonpay.api.request.*;
import com.photonpay.api.response.*;
import com.photonpay.api.service.PhotonPayService;
import lombok.RequiredArgsConstructor;

/**
 * @author ：lo-
 * @date ：Created in 2023/11/23 14:25
 */
@RequiredArgsConstructor
public class PhotonPayServiceImpl implements PhotonPayService {

    private final PhotonPayApiClient photonPayApiClient;

    /**
     * 获取卡bin
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public GetCardBinResponse getCardBin(GetCardBinRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 开卡
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public OpenCardResponse openCard(OpenCardRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 开卡结果查询
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public GetOpenCardResultResponse getOpenCardResult(GetOpenCardResultRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 更新卡
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public UpdateCardResponse updateCard(UpdateCardRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 注销卡
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public GetCardDetailResponse getCardDetail(GetCardDetailRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 注销卡
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public GetCvvResponse getCvv(GetCvvRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 注销卡
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public CancelCardResponse cancelCard(CancelCardRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 换汇询价
     *
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public PreRechargeResponse preRecharge(PreRechargeRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 充值下单
     *
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public RechargeResponse recharge(RechargeRequest request) {
        return photonPayApiClient.execute(request);
    }

    /**
     * 卡余额退还
     *
     * @param request 请求参数
     * @return 响应结果
     */
    @Override
    public RechargeReturnResponse rechargeReturn(RechargeReturnRequest request) {
        return photonPayApiClient.execute(request);
    }

}
